// var i;
// var $bundleConfig = require("./BundleConfig");
// var $aDManager = require("./ADManager");
// var $eventManager = require("./EventManager");
// var $tipsManager = require("./TipsManager");
// var $uIManager = require("./UIManager");
// var $uIView = require("./UIView");
// var $evenType = require("./EvenType");
// var $playerDataManager = require("./PlayerDataManager");
// var $excel = require("./Excel");
// var $const_Hall = require("./Const_Hall");
// var $hallGlobalVariable = require("./HallGlobalVariable");
// var $uIConfig_Home = require("./UIConfig_Home");
// var $uI_QianDaoItem = require("./UI_QianDaoItem");
// var b = cc._decorator;
// var w = b.ccclass;
// var I = b.property;
// var M = b.inspector;
// var E = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.content = null;
//         t.state1 = null;
//         t.state2 = null;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype._show = function (e) {
//         var t = [];
//         for (var o = 1; o < arguments.length; o++) {
//             t[o - 1] = arguments[o];
//         }
//         $playerDataManager.PlayerDataMgr.resetQianDaoCount();
//         this.initQianDao();
//     };
//     t.prototype.initQianDao = function () {
//         var e = $excel.Excel.shuiguoqiandao_all.size;
//         var t = this.content.children;
//         var o = function (e) {
//             var o = $excel.Excel.shuiguoqiandao(e + 1);
//             var i = t[e];
//             if (!i) {
//                 i = cc.instantiate(t[0]);
//                 n.content.addChild(i);
//             }
//             n.scheduleOnce(function () {
//                 i.getComponent($uI_QianDaoItem.default).initUi(o);
//             });
//         };
//         var n = this;
//         for (var i = 0; i < e; i++) {
//             o(i);
//         }
//         if (1 == $playerDataManager.PlayerDataMgr.globalData.isqiandaocode) {
//             this.state1.active = !0;
//             this.state2.active = !1;
//         } else {
//             this.state1.active = !1;
//             this.state2.active = !0;
//         }
//     };
//     t.prototype.onLinQu = function (e, t) {
//         if (void 0 === t) {
//             t = 1;
//         }
//         var o = this.content.children;
//         var n = null;
//         for (var i = 0; i < o.length; i++) {
//             var a = o[i].getComponent($uI_QianDaoItem.default);
//             if (1 == a.nowcode) {
//                 n = a.nowqiandao;
//                 break;
//             }
//         }
//         var r = n.award * t;
//         $playerDataManager.PlayerDataMgr.setQianDaoState();
//         var s = null;
//         var p = new $const_Hall.GetItemsData();
//         p.ids = [];
//         p.counts = [];
//         switch (n.awardtype) {
//             case 1:
//                 p.ids.push($hallGlobalVariable.default.goldId);
//                 p.counts.push(r);
//                 break;
//             case 2:
//                 p.ids.push($hallGlobalVariable.default.diamondId);
//                 p.counts.push(r);
//                 break;
//             case 3:
//                 p.ids.push($hallGlobalVariable.default.powerId);
//                 p.counts.push(r);
//                 break;
//             case 5:
//                 s = $hallGlobalVariable.default.GetSuiPian([r, 0, 0]);
//                 break;
//             case 6:
//                 s = $hallGlobalVariable.default.GetSuiPian([0, r, 0]);
//                 break;
//             case 7:
//                 s = $hallGlobalVariable.default.GetSuiPian([0, 0, r]);
//         }
//         if (s) {
//             s.forEach(function (e, t) {
//                 p.ids.push(t);
//                 p.counts.push(e);
//             });
//         }
//         $uIManager.default.open($bundleConfig.BundleNames.Home, $uIConfig_Home.UIView_Home.UI_GetItems, p);
//         p.clickCallBack = function () {
//             for (var e = 0; e < p.ids.length; e++) {
//                 var t = p.ids[e];
//                 var o = p.counts[e];
//                 switch (t) {
//                     case $hallGlobalVariable.default.goldId:
//                         $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.Home_Add_Gold, 2, o);
//                         break;
//                     case $hallGlobalVariable.default.diamondId:
//                         $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.Home_Add_Gold, 3, o);
//                         break;
//                     case $hallGlobalVariable.default.powerId:
//                         $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.Home_Add_Gold, 1, o);
//                         break;
//                     default:
//                         $tipsManager.TipMgr.showToast("恭喜获得水果碎片");
//                         $playerDataManager.PlayerDataMgr.AddEquipFragments(t, o);
//                 }
//             }
//         };
//         this.onCloseQianDao();
//     };
//     t.prototype.onDoubelLinQu = function () {
//         var e = this;
//         $aDManager.ADMgr.showRewardedVideo("双倍签到", function () {
//             e.onLinQu(null, 2);
//         });
//     };
//     t.prototype.onCloseQianDao = function () {
//         this._close();
//     };
//     __decorate([I(cc.Node)], t.prototype, "content", void 0);
//     __decorate([I(cc.Node)], t.prototype, "state1", void 0);
//     __decorate([I(cc.Node)], t.prototype, "state2", void 0);
//     return __decorate([w], t);
// })($uIView.default);
// exports.default = E;

// import { BundleNames } from './BundleConfig';
// import { ADMgr } from './ADManager';
// import { EventMgrInstance } from './EventManager';
// import { TipMgrInstance } from './TipsManager';
// import UIManager from './UIManager';
// import UIView from './UIView';
// import { EVENT_TYPE } from './EvenType';
// import { PlayerDataMgr } from './PlayerDataManager';
// import { Excel } from './Excel';
// import { GetItemsData } from './Const_Hall';
// import HallGlobalVariable from './HallGlobalVariable';
// import UI_QianDaoItem from './UI_QianDaoItem';
// import { UIView_Home } from './UIConfig_Home';

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * class E
//  * 建议类名称：QianDaoManager
//  */
// @ccclass
// export default class UI_QianDao extends UIView {

//     @property(cc.Node)
//     public content: cc.Node = null;

//     @property(cc.Node)
//     public state1: cc.Node = null;

//     @property(cc.Node)
//     public state2: cc.Node = null;

//     /**
//      * 显示方法
//      * @param args 传递的参数
//      * 建议方法名称：show
//      */
//     public _show(...args: any[]): void {
//         PlayerDataMgr.resetQianDaoCount();
//         this.initQianDao();
//     }

//     /**
//      * 初始化签到
//      * 建议方法名称：initializeQianDao
//      */
//     public initQianDao(): void {
//         const size = Excel.shuiguoqiandao_all.size;
//         const children = this.content.children;

//         const processItem = (index: number): void => {
//             const itemData = Excel.shuiguoqiandao(index + 1);
//             let item = children[index];
//             if (!item) {
//                 item = cc.instantiate(children[0]);
//                 this.content.addChild(item);
//             }
//             this.scheduleOnce(() => {
//                 item.getComponent(UI_QianDaoItem).initUi(itemData);
//             });
//         };

//         for (let i = 0; i < size; i++) {
//             processItem(i);
//         }

//         if (PlayerDataMgr.globalData.isqiandaocode === 1) {
//             this.state1.active = true;
//             this.state2.active = false;
//         } else {
//             this.state1.active = false;
//             this.state2.active = true;
//         }
//     }

//     /**
//      * 领取奖励
//      * @param event 事件
//      * @param multiplier 倍数
//      * 建议方法名称：receiveReward
//      */
//     public onLinQu(event: Event, multiplier: number = 1): void {
//         const children = this.content.children;
//         let currentQianDao: any = null;

//         for (let i = 0; i < children.length; i++) {
//             const itemComponent = children[i].getComponent(UI_QianDaoItem);
//             if (itemComponent.nowcode === 1) {
//                 currentQianDao = itemComponent.nowqiandao;
//                 break;
//             }
//         }

//         const rewardAmount = currentQianDao.award * multiplier;
//         PlayerDataMgr.setQianDaoState();
//         const itemsData = new GetItemsData();
//         itemsData.ids = [];
//         itemsData.counts = [];

//         let suiPian: Map<number, number> | null = null;

//         switch (currentQianDao.awardtype) {
//             case 1:
//                 itemsData.ids.push(HallGlobalVariable.goldId);
//                 itemsData.counts.push(rewardAmount);
//                 break;
//             case 2:
//                 itemsData.ids.push(HallGlobalVariable.diamondId);
//                 itemsData.counts.push(rewardAmount);
//                 break;
//             case 3:
//                 itemsData.ids.push(HallGlobalVariable.powerId);
//                 itemsData.counts.push(rewardAmount);
//                 break;
//             case 5:
//                 suiPian = HallGlobalVariable.GetSuiPian([rewardAmount, 0, 0]);
//                 break;
//             case 6:
//                 suiPian = HallGlobalVariable.GetSuiPian([0, rewardAmount, 0]);
//                 break;
//             case 7:
//                 suiPian = HallGlobalVariable.GetSuiPian([0, 0, rewardAmount]);
//                 break;
//         }

//         if (suiPian) {
//             suiPian.forEach((value, index) => {
//                 itemsData.ids.push(index);
//                 itemsData.counts.push(value);
//             });
//         }

//         UIManager.open(BundleNames.Home, UIView_Home.UI_GetItems, itemsData);
//         itemsData.clickCallBack = (): void => {
//             itemsData.ids.forEach((id, index) => {
//                 const count = itemsData.counts[index];
//                 switch (id) {
//                     case HallGlobalVariable.goldId:
//                         EventMgrInstance.dispatchEvent(EVENT_TYPE.Home_Add_Gold, 2, count);
//                         break;
//                     case HallGlobalVariable.diamondId:
//                         EventMgrInstance.dispatchEvent(EVENT_TYPE.Home_Add_Gold, 3, count);
//                         break;
//                     case HallGlobalVariable.powerId:
//                         EventMgrInstance.dispatchEvent(EVENT_TYPE.Home_Add_Gold, 1, count);
//                         break;
//                     default:
//                         TipMgrInstance.showToast("恭喜获得水果碎片");
//                         PlayerDataMgr.AddEquipFragments(id, count);
//                 }
//             });
//         };

//         this.onCloseQianDao();
//     }

//     /**
//      * 双倍领取奖励
//      * 建议方法名称：receiveDoubleReward
//      */
//     public onDoubelLinQu(): void {
//         ADMgr.showRewardedVideo("双倍签到", () => {
//             this.onLinQu(null, 2);
//         });
//     }

//     /**
//      * 关闭签到窗口
//      * 建议方法名称：closeQianDao
//      */
//     public onCloseQianDao(): void {
//         this._close();
//     }
// }

import { BundleNames } from './BundleConfig';
import { ADMgr } from './ADManager';
import { EventMgrInstance } from './EventManager';
import { TipMgr } from './TipsManager';
import UIManager from './UIManager';
import UIViewBase from './UIView';
import { EVENT_TYPE } from './EvenType';
import { PlayerDataMgr } from './PlayerDataManager';
import { Excel } from './Excel';
import { GetItemsData } from './Const_Hall';
import FruitDataManager from './HallGlobalVariable';
import ViewQianDaoItem from './UI_QianDaoItem';
import { UIView_Home } from './UIConfig_Home';

const { ccclass, property, inspector } = cc._decorator;

/**
 * class E
 * 建议类名称：QianDaoManager
 */
@ccclass
export default class ViewQianDao extends UIViewBase {

    @property(cc.Node)
    public content: cc.Node = null;

    @property(cc.Node)
    public state1: cc.Node = null;

    @property(cc.Node)
    public state2: cc.Node = null;

    /**
     * 显示方法
     * @param args 传递的参数
     * 建议方法名称：show
     */
    public _show(...args: any[]): void {
        PlayerDataMgr.resetQianDaoCount();
        this.initializeQianDao();
    }

    /**
     * 初始化签到
     * 建议方法名称：initializeQianDao
     */
    public initializeQianDao(): void {
        const size = Excel.shuiguoqiandao_all.size; // 获取签到数据的条目数
        const children = this.content.children; // 获取 content 节点下的所有子节点

        // 处理单个签到项的反复逻辑
        const processItem = (index: number): void => {
            const itemData = Excel.shuiguoqiandao(index + 1); // 获取单个签到项的数据
            let item = children[index]; // 获取 content 节点下对应索引的子节点
            if (!item) { // 若该位置没有子节点，则实例化一个新节点并添加到 content 节点中
                item = cc.instantiate(children[0]);
                this.content.addChild(item);
            }
            this.scheduleOnce(() => { // 延迟初始化子节点的 UI 数据
                item.getComponent(ViewQianDaoItem).initUI(itemData);
            });
        };

        // 遍历签到数据条目数并处理签到项
        for (let i = 0; i < size; i++) {
            processItem(i);
        }

        // 根据玩家数据修改 state1 和 state2 节点的显隐状态
        if (PlayerDataMgr.globalData.isqiandaocode === 1) {
            this.state1.active = true;
            this.state2.active = false;
        } else {
            this.state1.active = false;
            this.state2.active = true;
        }
    }

    /**
     * 领取奖励
     * @param event 事件
     * @param multiplier 奖励倍数
     * 建议方法名称：receiveReward
     */
    public onLinQu(event: Event, multiplier: number = 1): void {
        const children = this.content.children; // 获取 content 节点下的所有子节点
        let currentQianDao: any = null;

        // 找到当前签到项的组件
        for (let i = 0; i < children.length; i++) {
            const itemComponent = children[i].getComponent(ViewQianDaoItem);
            if (itemComponent.nowcode === 1) { // 通过 nowcode 标识当前签到项
                currentQianDao = itemComponent.nowqiandao;
                break;
            }
        }

        const rewardAmount = currentQianDao.award * multiplier; // 计算奖励数量
        PlayerDataMgr.setQianDaoState(); // 设置签到状态

        // 初始化领取的物品数据
        const itemsData = new GetItemsData();
        itemsData.ids = [];
        itemsData.counts = [];

        let suiPian: Map<number, number> | null = null;

        // 根据奖励类型添加奖励物品或碎片
        switch (currentQianDao.awardtype) {
            case 1:
                itemsData.ids.push(FruitDataManager.goldId);
                itemsData.counts.push(rewardAmount);
                break;
            case 2:
                itemsData.ids.push(FruitDataManager.diamondId);
                itemsData.counts.push(rewardAmount);
                break;
            case 3:
                itemsData.ids.push(FruitDataManager.powerId);
                itemsData.counts.push(rewardAmount);
                break;
            case 5:
                suiPian = FruitDataManager.getSuiPian([rewardAmount, 0, 0]);
                break;
            case 6:
                suiPian = FruitDataManager.getSuiPian([0, rewardAmount, 0]);
                break;
            case 7:
                suiPian = FruitDataManager.getSuiPian([0, 0, rewardAmount]);
                break;
        }

        // 如果获得碎片，则将其加入物品数据
        if (suiPian) {
            suiPian.forEach((value, index) => {
                itemsData.ids.push(index);
                itemsData.counts.push(value);
            });
        }

        // 打开领取物品的 UI 界面
        UIManager.open(BundleNames.Home, UIView_Home.UI_GetItems, itemsData);
        
        // 定义物品领取后的回调函数
        itemsData.clickCallBack = (): void => {
            itemsData.ids.forEach((id, index) => {
                const count = itemsData.counts[index];
                switch (id) {
                    case FruitDataManager.goldId:
                        EventMgrInstance.emitEvent(EVENT_TYPE.Home_Add_Gold, 2, count);
                        break;
                    case FruitDataManager.diamondId:
                        EventMgrInstance.emitEvent(EVENT_TYPE.Home_Add_Gold, 3, count);
                        break;
                    case FruitDataManager.powerId:
                        EventMgrInstance.emitEvent(EVENT_TYPE.Home_Add_Gold, 1, count);
                        break;
                    default:
                        TipMgr.showToast("恭喜获得水果碎片");
                        PlayerDataMgr.addEquipFragments(id, count);
                }
            });
        };

        // 关闭签到窗口
        this.onCloseQianDao();
    }

    /**
     * 双倍领取奖励
     * 建议方法名称：receiveDoubleReward
     */
    public onDoubelLinQu(): void {
        ADMgr.showRewardedVideoAd("双倍签到", () => {
            this.onLinQu(null, 2);
        });
    }

    /**
     * 关闭签到窗口
     * 建议方法名称：closeQianDao
     */
    public onCloseQianDao(): void {
        this._close();
    }
}